/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fronteira;

import entidade.DTO.ItensEventoDTO;
import entidade.DTO.ProdutoDTO;
import entidade.DTO.TipoProdutoDTO;
import entidade.ImagemProdEntidade;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.apache.commons.io.IOUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.event.TabChangeEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author thulioa
 */
@ManagedBean
@SessionScoped
public class AdminSessionMB implements Serializable {

    private ProdutoDTO produto;
    private List<TipoProdutoDTO> listaTipoProduto;
    private TipoProdutoDTO tipoProduto;
    private String corAux;
    private int estoqueMinimoAux;
    private int estoqueInicialAux;
    private String tamanhoAux;
    private List<UploadedFile> arquivo;
    private List<ImagemProdEntidade> imagem;
    private String roupa = "false";
    private Integer activeIndex = 0;
    private Integer valorTabAtual; //tab do cadastro de produto
    private Double valorFinalProduto = 0.0;
    private Boolean rendCadastroOferta = false;
    private Boolean rendCadastroPromocao = false;
    private ItensEventoDTO itemEventoOferta;
    private ItensEventoDTO itemEventoPromocao;
    
    
    
    /**
     * Creates a new instance of AdminViewMBean
     */
    public AdminSessionMB() { //contrutor

        if (produto == null) {
            produto = new ProdutoDTO();
        }

        if (listaTipoProduto == null) {
            listaTipoProduto = new ArrayList<TipoProdutoDTO>();
        }
        if(itemEventoOferta == null){
            itemEventoOferta = new ItensEventoDTO();
        }
        if(itemEventoPromocao == null){
            itemEventoPromocao = new ItensEventoDTO();
        }

    }

    public String gravaProdutoAvancar() {
        if (activeIndex == null) {
            activeIndex = 0;
        } else {
            activeIndex += 1;
        }
        return "cadastro_produto.jsf";
    }

     public void onTabChange(TabChangeEvent event) {  
       valorTabAtual = event.getTab().getFacetCount();
         System.out.println("primeiro = "+event.getTab().getFacetCount());
         System.out.println("primeiro2 = "+event.getTab().getChildCount());
    } 
    
    public void addTipoNaLista() {
        tipoProduto = new TipoProdutoDTO(estoqueMinimoAux, estoqueInicialAux, tamanhoAux, corAux);
        listaTipoProduto.add(tipoProduto);

    }

    public void removeItemTipo(TipoProdutoDTO tipo) {
        listaTipoProduto.remove(tipo);
    }

    public void uploadFotos(FileUploadEvent event) {
        arquivo = new ArrayList<UploadedFile>();
        imagem = new ArrayList<ImagemProdEntidade>();

        try {
            arquivo.add(event.getFile());
            System.out.println(arquivo.get(0).getFileName());
            for (UploadedFile uf : arquivo) {
                InputStream in = uf.getInputstream();
                ImagemProdEntidade ipe = new ImagemProdEntidade();
                ipe.setImagem(IOUtils.toByteArray(in));
                imagem.add(ipe);
            }

        } catch (Exception e) {
            System.out.println("erro e ==== " + e.getMessage());
        }

    }

    public List<UploadedFile> getArquivo() {
        return arquivo;
    }

    public void setArquivo(List<UploadedFile> arquivo) {
        this.arquivo = arquivo;
    }

    public ProdutoDTO getProduto() {
        return produto;
    }

    public void setProduto(ProdutoDTO produto) {
        this.produto = produto;
    }

    public List<ImagemProdEntidade> getImagem() {
        return imagem;
    }

    public void setImagem(List<ImagemProdEntidade> imagem) {
        this.imagem = imagem;
    }

    public String getRoupa() {
        return roupa;
    }

    public void setRoupa(String roupa) {
        this.roupa = roupa;
    }

    public List<TipoProdutoDTO> getListaTipoProduto() {
        return listaTipoProduto;
    }

    public void setListaTipoProduto(List<TipoProdutoDTO> listaTipoProduto) {
        this.listaTipoProduto = listaTipoProduto;
    }

    public TipoProdutoDTO getTipoProduto() {
        return tipoProduto;
    }

    public void setTipoProduto(TipoProdutoDTO tipoProduto) {
        this.tipoProduto = tipoProduto;
    }

    public String getCorAux() {
        return corAux;
    }

    public void setCorAux(String corAux) {
        this.corAux = "#" + corAux;
    }

    public int getEstoqueMinimoAux() {
        return estoqueMinimoAux;
    }

    public void setEstoqueMinimoAux(int estoqueMinimoAux) {
        this.estoqueMinimoAux = estoqueMinimoAux;
    }

    public int getEstoqueInicialAux() {
        return estoqueInicialAux;
    }

    public void setEstoqueInicialAux(int estoqueInicialAux) {
        this.estoqueInicialAux = estoqueInicialAux;
    }

    public String getTamanhoAux() {
        return tamanhoAux;
    }

    public void setTamanhoAux(String tamanhoAux) {
        this.tamanhoAux = tamanhoAux;
    }

    public Integer getActiveIndex() {
        System.out.println("valor do index = "+activeIndex);
        return activeIndex;
    }

    public void setActiveIndex(Integer activeIndex) {
        this.activeIndex = activeIndex;
    }

    public Double getValorFinalProduto() {
        Double valorCompra = 0.0;
        Double valorLucro = 0.0;
        if(produto.getPrecoDeCompra() != null){
            valorCompra = produto.getPrecoDeCompra(); 
        }
            
        if(produto.getMargemLucro() != null){
            valorLucro = produto.getMargemLucro();
        }
       
        valorFinalProduto = valorCompra + valorLucro;
        
        return valorFinalProduto;
    }

    public Boolean getRendCadastroOferta() {
        return rendCadastroOferta;
    }

    public void setRendCadastroOferta(Boolean rendCadastroOferta) {
        this.rendCadastroOferta = rendCadastroOferta;
    }

    public ItensEventoDTO getItemEventoOferta() {
        return itemEventoOferta;
    }

    public void setItemEventoOferta(ItensEventoDTO itemEventoOferta) {
        this.itemEventoOferta = itemEventoOferta;
    }

    public ItensEventoDTO getItemEventoPromocao() {
        return itemEventoPromocao;
    }

    public void setItemEventoPromocao(ItensEventoDTO itemEventoPromocao) {
        this.itemEventoPromocao = itemEventoPromocao;
    }

    public Boolean getRendCadastroPromocao() {
        return rendCadastroPromocao;
    }

    public void setRendCadastroPromocao(Boolean rendCadastroPromocao) {
        this.rendCadastroPromocao = rendCadastroPromocao;
    }
}
